﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace RandomKeyGenerator
{
    public class Gene : IComparable
    {

        private int indice;
        private Double keyOrdenacao;
        private Double keyCriterio;
      


        public Double KeyCriterio
        {
            get { return keyCriterio; }
            set 
            { 
                if (value > 1.0)
                    throw new ArgumentException ("O Valor de key criterio não pode ser > do que 1",value.ToString());
                keyCriterio = value; 
            }
        }


        public Double KeyOrdenacao
        {
            get { return keyOrdenacao; }
            set
            {
                if (value > 1.0)
                    throw new ArgumentException("O Valor de key ordenação não pode ser > do que 1", value.ToString());

                keyOrdenacao = value;
            }
        }

        public int Indice
        {
            get { return indice; }
            set { indice = value; }
        }


        public int CompareTo(object obj)
        {
            Gene key1 = obj as Gene;

       
            if (key1.keyOrdenacao < this.keyOrdenacao)
                return 1;

            else if (key1.keyOrdenacao == this.keyOrdenacao)
                return 0;
            else
                return -1;
        }

        public override string ToString()
        {
            return "Indice: " + this.indice + " Numero Aleatorio: " +this.keyOrdenacao;
        }

        public override bool Equals(object obj)
        {
            if (this.keyOrdenacao == (obj as Gene).keyOrdenacao && this.keyCriterio == (obj as Gene).keyCriterio && this.indice == (obj as Gene).indice)
                return true;
            return false;
        }
    }
}
